package com.xiaoshuidi.cloud.module.iot.dal.model.callback;

import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @author Sky
 * create 2019/11/05
 * email sky.li@ixiaoshuidi.com
 **/
@Data
public class AliHomeLinkPayloadVO {
    /**
     * 消息内容：根据其中的messageType字段区分消息类型
     * DEVICE_PROPERTY 物的属性变更消息
     * DEVICE_EVENT 物的事件变更消息
     * DEVICE_STATUS_CHANGE 物的状态变更消息
     */
    @Schema(description = "消息类型")
    private String messageType;

    /**
     * 设备品类Key
     */
    @Schema(description = "设备品类Key")
    private String deviceType;

    /**
     * 数据流转消息产生时间, 自1970-1-1起流逝的毫秒值
     */
    @Schema(description = "数据流转消息产生时间")
    private Long gmtCreate;

    /**
     * 物的唯一id
     */
    @Schema(description = "物的唯一id")
    private String iotId;

    /**
     * 设备所属产品
     */
    @Schema(description = "设备所属产品")
    private String productKey;

    /**
     * 设备名称
     */
    @Schema(description = "设备名称")
    private String deviceName;

    /**
     * 变更的状态列表，列表元素包括：attribute - 变更属性, value - 变更值, time - 采样时间
     */
    @Schema(description = "变更的状态列表")
    private JSONObject items;

    /**
     * 事件标识符，对应事件的 identifier
     */
    @Schema(description = "事件标识符")
    private String identifier;

    /**
     * 事件名称
     */
    @Schema(description = "事件名称")
    private String name;

    /**
     * 事件类型
     */
    @Schema(description = "事件类型")
    private String type;

    /**
     * 设备上报value对应的时间戳(毫秒)
     */
    @Schema(description = "设备上报value对应的时间戳")
    private Long time;

    /**
     * 变更的事件属性列表：key - value 键值对
     */
    @Schema(description = "变更的事件属性列表")
    private JSONObject value;

    /**
     * 状态信息，元素包括：value - 状态值, time - 采样时间 value状态值定义：1(在线), 0(离线)
     */
    @Schema(description = "状态信息")
    private JSONObject status;

    /**
     * 设备状态变更动作： online - 上线动作，offline - 下线动作
     */
    @Schema(description = "设备状态变更动作")
    private String action;

}
